package com.budweiser.commons.utils;

import com.budweiser.model.system.menu.NavMenu;
import com.budweiser.model.system.menu.enums.MenuType;
import com.budweiser.model.system.menu.result.GroupMenu;
import com.budweiser.model.system.menu.result.Item;
import com.budweiser.model.system.menu.result.Submenu;

import java.util.*;

/**
 * 合成menu返回json串的工具类
 */
public class MenuJsonUtil {

    /**
     * 将navmenu列表中为一个组的menu汇总到一起
     * @param navMenuList 中为所有的菜单组
     * @return
     */
    public static Map<String, GroupMenu> togetherGroupMenu(List<NavMenu> navMenuList) {
        Map<String, GroupMenu> groupTitleMap= new HashMap<>();
        //先得到所有的分组，使用hashmap键名不可重复特性
        for (NavMenu navMenu : navMenuList) {
            GroupMenu groupMenu = new GroupMenu();
            groupMenu.setGroupTitle(navMenu.getGroupTitle());
            groupTitleMap.put(navMenu.getGroupTitle(), groupMenu);
        }
        //根据菜单的分类，将其插入到不同的分组的不同位置
        for (NavMenu navMenu : navMenuList) {
            if (navMenu.getMenuType() == MenuType.ITEMMENU.getType_code()) {
                Item item = new Item();
                item.setTitle(navMenu.getMenuName());
                item.setIndex(navMenu.getMenuRouteLink());
                item.setIcon(navMenu.getMenuCSS());
                groupTitleMap.get(navMenu.getGroupTitle()).getItems().add(item);
            } else if (navMenu.getMenuType() == MenuType.SUBMENU.getType_code()) {
                Submenu submenu = new Submenu();
                submenu.setTitle(navMenu.getMenuName());
                submenu.setIndex(navMenu.getMenuRouteLink());
                submenu.setIcon(navMenu.getMenuCSS());
                groupTitleMap.get(navMenu.getGroupTitle()).getSubmenus().add(submenu);
            }
        }
         return groupTitleMap;
    }

}
